home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * MakeChannel.C
- *
- * (internal routine)
- */
-
- #include "lib.h"
-
- short DUseSignal = -1;
-
- void *
- MakeChannel(ior, host)
- IOSTD *ior;
- char *host;
- {
- CHANN *chan = AllocMem(sizeof(CHANN), MEMF_PUBLIC|MEMF_CLEAR);
-
- /* Name, Pri */
- chan->port.mp_Node.ln_Type = NT_MSGPORT;
- if (DUseSignal >= 0)
- chan->port.mp_SigBit = DUseSignal;
- else
- chan->port.mp_SigBit = AllocSignal(-1);
- chan->port.mp_SigTask = FindTask(NULL);
- NewList(&chan->port.mp_MsgList);
- NewList(&chan->rdylist);
- chan->chan = (long)ior->io_Unit;
- ior->io_Offset = (long)chan;
- if (host) {
- char buf[sizeof(DNETPORTNAME)+32];
- sprintf(buf, "%s%s", DNETPORTNAME, host);
- ior->io_Message.mn_ReplyPort = FindPort(buf);
- }
- chan->dnetport = ior->io_Message.mn_ReplyPort;
- return((void *)chan);
- }
-
- void
- DeleteChannel(_chan)
- void *_chan;
- {
- CHANN *chan = (CHANN *)_chan;
- if (chan->port.mp_SigBit != DUseSignal)
- FreeSignal(chan->port.mp_SigBit);
- FreeMem(chan, sizeof(CHANN));
- }
-
-